
<?php

include($_SESSION['dir'].'clases/producto.php');
include($_SESSION['dir'].'clases/oferta.php');
include($_SESSION['dir'].'clases/archivo.php');
include($_SESSION['dir'].'clases/persona.php');

function validar_editarProducto(){
	return 0;	
}

$bd_url;
$bd_usuario;
$bd_pass;
$bd_nombre; 

/*
Metodo para inicializar BD.
Retorna una variable de conexion
*/
function iniBD(){

/* Get Sectors from session */   
    if(!isset($_SESSION['bd_url'])){
		
            include('conf/conf.php');
            $dbConf = new Conf();
            $bd_url = $dbConf->get_url();
            $bd_usuario = $dbConf->get_usuario();
            $bd_pass = $dbConf->get_pass();
            $bd_nombre = $dbConf->get_nombre();
                
                //Set DB Info. in-session
            $_SESSION['bd_url']=$bd_url; 
            $_SESSION['bd_usuario']=$bd_usuario; 
            $_SESSION['bd_pass']=$bd_pass; 
            $_SESSION['bd_nombre']=$bd_nombre;
        
      
        
          	$conexion = mysql_connect($bd_url,$bd_usuario,$bd_pass);
            if(!$conexion) die ("Error al conectar al localhost");

            $db = mysql_select_db($bd_nombre,$conexion);
            if(!$db) die ("Error al conectar con la base de datos");

        }
		
    $bd_url = $_SESSION['bd_url'];
    $bd_usuario = $_SESSION['bd_usuario'];
    $bd_pass = $_SESSION['bd_pass'];
    $bd_nombre = $_SESSION['bd_nombre']; 

    $conexion = mysql_connect($bd_url,$bd_usuario,$bd_pass);
    if(!$conexion) die ("Error al conectar al host 2");
    $db = mysql_select_db($bd_nombre,$conexion);
    if(!$db) die ("Error al conectar con base datos 2");
	
    return $conexion;
}

/*
Metodo cerrar conexion

*/
function closeBD($conexion){
    mysql_close($conexion);
}


/*
Metodo retorna la informacion de los producto 
(requiere ID) o productos (ID=0). 
Retorna un arreglo con objetos Producto. 
*/
function getProductoInfo($id){	
    if($id == 0){
            $sql= "SELECT * FROM producto";                
        }
        else{
            $sql= "SELECT * FROM producto WHERE ProductoID='".$id."'";               
        }
	return getArregloProducto($sql);
}

/*
Metodo retorna la informacion de los producto 
de una categoria. REQUIERE la categoria id
Retorna un arreglo con objetos Producto. 
*/
function getProductos($CategoriaID){
	
    if($CategoriaID==0) //si se quieren tdas las categorias
		$sql= "SELECT * FROM producto ORDER BY fecha_creado DESC";

    else $sql= "SELECT * FROM producto WHERE CategoriaID='".$CategoriaID."' ORDER BY fecha_creado DESC";               

	return getArregloProducto($sql);
}

//FUNCION crea objetos producto y los agrega en un arreglo
//REQUIERE String con consulta sql de los productos
//RETORNA arreglo de objetos tipo producto
function getArregloProducto($sql){
	$conexion = iniBD();
    $sql;
    $res = mysql_query($sql);

    $arreglo = array();
    $cont = 0;

    while($row = mysql_fetch_array($res)){   
             
                //construir info de producto
            $producto = new Producto();        
            $producto->set_ID($row['ProductoID']);
            $producto->set_claves($row['claves']);
            $producto->set_nombre($row['nombre']);
            $producto->set_descripcion($row['descripcion']);
			$producto->set_precio($row['precio']);
            $producto->set_descuento($row['descuento']);
            $producto->set_tamano($row['tamano']);
            $producto->set_peso($row['peso']);
			//$producto->set_archivo();
			//$producto->set_imagen();
			$producto->set_cantidad($row['cantidad']);
			$producto->set_categoria($row['CategoriaID']);
			$producto->set_fecha_creado($row['fecha_creado']);
			$producto->set_fecha_modificado($row['fecha_modificado']);
			
			
			//***********************IMAGEN************
			if($row['imagen']!=NULL){
			$sql2 = "SELECT * FROM archivo WHERE ArchivoID='".$row['imagen']."'";
			$imagen = new Archivo();
			
			$res2 = mysql_query($sql2);
			if($row2 = mysql_fetch_array($res2)){
		
				$imagen->set_ID($row2['ArchivoID']);	
				$imagen->set_claves($row2['claves']);	
				$imagen->set_nombre($row2['nombre']);
				$imagen->set_descripcion($row2['descripcion']);
				$imagen->set_dir($row2['dir']);
				//$imagen->set_persona($row2['PersonaID']);
				$imagen->set_fecha_creado($row2['fecha_creado']);
				$imagen->set_fecha_modificado($row2['fecha_modificado']);	
				
				$producto->set_imagen($imagen);
			}
			else $producto->set_imagen(NULL);
			}
			else $producto->set_imagen(NULL);
			
			
			//***********************ARCHIVO************
			if($row['ArchivoID']!=NULL){
			$sql3 = "SELECT * FROM archivo WHERE ArchivoID='".$row['ArchivoID']."'";
			$archivo = new Archivo();
			
			$res3 = mysql_query($sql3);
			if($row3 = mysql_fetch_array($res3)){
		
				$archivo->set_ID($row3['ArchivoID']);	
				$archivo->set_claves($row3['claves']);	
				$archivo->set_nombre($row3['nombre']);
				$archivo->set_descripcion($row3['descripcion']);
				$archivo->set_dir($row3['dir']);
				//$archivo->set_persona($row3['PersonaID']);
				$archivo->set_fecha_creado($row3['fecha_creado']);
				$archivo->set_fecha_modificado($row3['fecha_modificado']);	
				
				$producto->set_archivo($archivo);
			}
			else $producto->set_archivo(NULL);
			}
			else $producto->set_archivo(NULL);
			
                
            //construir el arreglo de productos
            $arreglo[$cont] = $producto;
            $cont = $cont +1;              
        }
    //closeBD($conexion);
    return $arreglo;	
}


//FUNCION Crear un nuevo producto en la BD
//REQUIERE: $datos => arreglo con datos del formulario
//RETORNA: Si hay creacion satisfactoria retorna el ProductoID sino 0
//SUPONE: $datos ya fueron verificados por el MODULO de DiSPONIBILIDAD
function crearProducto($datos){
	date_default_timezone_set('America/Costa_Rica');
	$today = date("y-m-d h:i:s");
	
	if($datos['claves']==NULL)$datos['claves']='NULL';
	else $datos['claves'] = "'".$datos['claves']."'";
	$datos['nombre'] = "'".$datos['nombre']."'";
	if($datos['descripcion']==NULL)$datos['descripcion']='NULL';
	else $datos['descripcion'] = "'".$datos['descripcion']."'"; 
	if($datos['precio']==NULL)$datos['precio']='NULL';
	else $datos['precio'] = "'".$datos['precio']."'";
	if($datos['descuento']==NULL)$datos['descuento']='NULL';
	else $datos['descuento'] = "'".$datos['descuento']."'";
	if($datos['tamano']==NULL)$datos['tamano']='NULL';
	else $datos['tamano'] = "'".$datos['tamano']."'";
	if($datos['peso']==NULL)$datos['peso']='NULL';
	else $datos['peso'] = "'".$datos['peso']."'";
	if($datos['cantidad']==NULL)$datos['cantidad']='NULL';
	else $datos['cantidad'] = "'".$datos['cantidad']."'";

	$sql ="INSERT INTO producto(claves,nombre,descripcion,precio,descuento,tamano,peso,cantidad,CategoriaID,fecha_creado) VALUES($datos[claves],$datos[nombre],$datos[descripcion],$datos[precio],$datos[descuento],$datos[tamano],$datos[peso],$datos[cantidad],$datos[CategoriaID],'$today')";
	
	$conexion = iniBD();
	if(mysql_query($sql)){
		$row = mysql_fetch_row(mysql_query('SELECT MAX(ProductoID) FROM producto'));
		closeBD($conexion);
		echo "<script languaje='javacript'>confirm('Producto creado exitosamente.');</script>";
		return $row[0];			   
	}
	else {
		closeBD($conexion);
		return 0;
	}
}

//FUNCION Edita un producto en la BD
//REQUIERE: $datos => arreglo con datos del formulario
//RETORNA: Si hay edicion satisfactoria retorna el 1 sino 0
//SUPONE: $datos ya fueron verificados por el MODULO de DiSPONIBILIDAD
function editarProducto($datos){
	date_default_timezone_set('America/Costa_Rica');
	$today = date("y-m-d h:i:s");
	/*
	$sql = 'UPDATE producto SET claves='."'".$datos['claves']."',nombre='".$datos['nombre']."',descripcion='".$datos['descripcion']."'".',precio='.$datos['precio'].',descuento='.$datos['descuento'].",tamano='".$datos['tamano']."',peso='".$datos['peso']."',cantidad=".$datos['cantidad'].',CategoriaID='.$datos['CategoriaID'].",fecha_modificado='".$today."' WHERE ProductoID=".$datos['ProductoID'];
	*/
 
	if($datos['claves']==NULL)$datos['claves']='NULL';
	else $datos['claves'] = "'".$datos['claves']."'";
	$datos['nombre'] = "'".$datos['nombre']."'";
	if($datos['descripcion']==NULL)$datos['descripcion']='NULL';
	else $datos['descripcion'] = "'".$datos['descripcion']."'"; 
	if($datos['precio']==NULL)$datos['precio']='NULL';
	else $datos['precio'] = "'".$datos['precio']."'";
	if($datos['descuento']==NULL)$datos['descuento']='NULL';
	else $datos['descuento'] = "'".$datos['descuento']."'";
	if($datos['tamano']==NULL)$datos['tamano']='NULL';
	else $datos['tamano'] = "'".$datos['tamano']."'";
	if($datos['peso']==NULL)$datos['peso']='NULL';
	else $datos['peso'] = "'".$datos['peso']."'";
	if($datos['cantidad']==NULL)$datos['cantidad']='NULL';
	else $datos['cantidad'] = "'".$datos['cantidad']."'";

	$sql ="UPDATE producto SET claves= $datos[claves],nombre=$datos[nombre],descripcion=$datos[descripcion],precio=$datos[precio],descuento=$datos[descuento],tamano=$datos[tamano],peso=$datos[peso],cantidad=$datos[cantidad],CategoriaID=$datos[CategoriaID],fecha_modificado='$today' WHERE ProductoID=$datos[ProductoID]";
	
	
	$conexion = iniBD();
	
	if(mysql_query($sql)){
		echo "<script languaje='javacript'>confirm('Producto editado exitosamente.');</script>";
		return 1;
	}
	else {
		return 0;
	}
}


//FUNCION Elimina un producto
//REQUIERE: el ProductoID
//RETORNA: Si hay eliminacion satisfactoria retorna 1 sino 0
function delProducto($id){
	$conexion = iniBD();
	$res=mysql_query("SELECT imagen, ArchivoID,CategoriaID FROM producto WHERE ProductoID='$id'");
	if($row=mysql_fetch_array($res)){
		if($row['imagen']!=NULL){ //Eliminamos archivo imagen
			if(!delArchivo('../images/'.$row['CategoriaID'],$row['imagen'])) return 0;
		}
		if($row['ArchivoID']!=NULL){ //Eliminamos archivo otro
			if(!delArchivo('../archivo/'.$row['CategoriaID'],$row['ArchivoID'])) return 0;
		}		
		if(mysql_query("DELETE FROM producto WHERE ProductoID = '$id'")) return 1;
		else return 0;
	}
	else echo "<script languaje='javacript'>confirm('Producto no existe en la base de datos.');</script>";
}

//FUNCION retorna el nombre de una categoria
//REQUIERE el id de la categoria
//RETORNA cadena
function getCategoria($CategoriaID){
	iniBD();
	$res= mysql_query('SELECT nombre FROM categoria WHERE CategoriaID='.$CategoriaID);
	if($row=mysql_fetch_row($res))
		return $row[0];				
	else return 0;
}

//FUNCION Agrega o reemplaza una imagen a un producto 
//REQUIERE: el $file que es el $_FILES['file'] y el ProductoID
//RETORNA: Si hay creacion retorna 1 sino 0
function addImagen($ProductoID,$file){
	
	$conexion = iniBD();
	if($row=mysql_fetch_row(mysql_query('SELECT CategoriaID, imagen FROM producto WHERE ProductoID='.$ProductoID))){
	
		$datos=array('claves','descripcion','dir');
		$datos['dir']='images/'.$row[0];
		
		$res = upArch($datos,$file);
		if($res){
			if(mysql_query('UPDATE producto SET imagen = '.$res.' WHERE ProductoID = '.$ProductoID)){
				if($row[1]!=NULL){ //SI El PRODUCTO TENIA Imagen la eliminamos 
					delArchivo('../images/'.$row[0],$row[1]);
				}
				return 1;	
			}
			else{
				echo "<script languaje='javacript'>confirm('No se pudo finalizar el cambio de imagen: Error N24');</script>";
				return 0;
			}
		}
		else{
			//Metodos subirArch() ya tienen mensajes de confirmacion de error
			return 0;
		}
	}
	else{
		echo "<script languaje='javacript'>confirm('No se puede subir la imagen en este momento: Error N25');</script>";
		return 0;
	}
}

//FUNCION Agrega un archivo a un producto
//REQUIERE: el $file que es el $_FILES['file'] y el ProductoID
//RETORNA: Si hay creacion satisfactoria retorna 1 sino 0
function addArchivo($ProductoID,$file){
	$conexion = iniBD();
	if($row=mysql_fetch_row(mysql_query('SELECT CategoriaID,ArchivoID FROM producto WHERE ProductoID='.$ProductoID))){
	
		$datos=array('claves','descripcion','dir');
		$datos['dir']='archivo/'.$row[0];
		
		if($row[1]!=NULL){ //SI El PRODUCTO TIENE Imagen la eliminamos primero
			if(!delArchivo('../'.$datos['dir'],$row[1])) return 0;
		}
		
		$res = upArch($datos,$file);
		if($res){
			if(mysql_query('UPDATE producto SET ArchivoID = '.$res.' WHERE ProductoID = '.$ProductoID))
				return 1;	
			else return 0;
		}
		else{
			echo 'Error al subir archivo';
			return 0;
		}
	}
	else{
		echo 'Error en addArchivo()';
		return 0;
	}
}

//FUNCION Eliminar Archivos
//REQUIERE id del archivo a eliminar y la dir relativa
//RETORNA 1 si se elimina satisfactoriamente sino 0
function delArchivo($dir,$id) 
{
		$conexion = iniBD();
		$sql = mysql_query("select dir,nombre from archivo WHERE ArchivoID = '$id'");
		if($row = mysql_fetch_array($sql)){
		
			$arch = $dir.'/'.$row['nombre'];
		
			if ( file_exists( $arch ) )
    		{
				unlink($arch); //Eliminamos de la carpeta el archivo 
			
				if(mysql_query("DELETE FROM archivo WHERE ArchivoID = '$id'"))
				{
					echo "<script languaje='javacript'>confirm('Se elimina archivo id = $id satisfactoriamente...');</script>";
					return 1;
				}
				else echo "<script languaje='javacript'>confirm('No hay permisos para eliminar foto en carpeta.');</script>";
			}
			else {
				echo "<script languaje='javacript'>confirm('Archivo id = $id no existe en direccion...');</script>";
				return 0;
			}
		}
		else echo "<script languaje='javacript'>confirm('Archivo id = $id no existe en base de datos...');</script>";
}

//FUNCION Retorna los archivos de una carpeta
//REQUIERE La dir y nombre de la carpeta Ej: getArchivos('archivos/usuarios')
//RETORNA Un arreglo con objetos Archivo
function getArchivos($dir){
	$coneccion = iniBD();
	$arreglo=array();
	$cont=0;
	
	$res=mysql_query("SELECT * FROM archivo WHERE dir='".$dir."'");
	while($row=mysql_fetch_array($res)){
		$archivo=new Archivo();
				$archivo->set_ID($row['ArchivoID']);	
				$archivo->set_claves($row['claves']);	
				$archivo->set_nombre($row['nombre']);
				$archivo->set_descripcion($row['descripcion']);
				$archivo->set_dir($row['dir']);
				//$archivo->set_persona($row['PersonaID']);
				$archivo->set_fecha_creado($row['fecha_creado']);
				$archivo->set_fecha_modificado($row['fecha_modificado']);	

	    //construir el arreglo de productos
        $arreglo[$cont] = $archivo;
    	$cont = $cont +1;
	}
    closeBD($coneccion);
    return $arreglo;
}

//FUNCION Eliminar Comentario
//REQUIERE id del comentario a eliminar
function delDesArchivo($id){
	$conexion = iniBD();
	$sql = "UPDATE archivo SET descripcion = '' WHERE id='$id'";
	mysql_query($sql);
	return;
}


//*****************************  UP FILES  *******************************

//FUNCION sube un archivo 
//REQUIERE $form => arreglo con datos del formulario
//Ej: array('claves','descripcion','dir'); y el $file que es el $_FILES['file']
//DEVUELVE el id del nuevo archivo y 0 si error
function upArch($form,$file) 
{
	if(upFileTo_Folder($form,$file)==1) //Si se sube en la carpeta de archivos
		return upFileTo_DB($form,$file); //Se guarda en la BD
	return 0;
}

//FUNCION sube archivo en carpeta
//REQUIERE $form => arreglo con datos del formulario
//Ej: $form['dir'] y el $file que es el $_FILES['file']
function upFileTo_Folder($form,$file){

		$max_filesize = 8*1024*1024;//Maximo tamano para subir un archivo
		
		$filesource= $file['tmp_name'];
		$filename  = $file['name'];
		$filesize  = $file['size'];
		
		if(isset($form['dir']))$filedest= '../'.$form['dir'].'/'.$filename;
		else $filedest= 'archivo'.'/'.$filename;

		if ($filename==""){
			echo "<script languaje='javacript'>confirm('Debe seleccionar un archivo primero');</script>";
			return 0;
		}
		/*if (!in_array(strtolower(extname($filename)), $allowed_fileext)) 
			$filename .= ".badext";*/
	
		if ($filesize > $max_filesize) {
			echo "<script languaje='javacript'>confirm('El tamano del archivo es mayor al del limite(".getfilesize($max_filesize).").');</script>";
			return 0;
		}
	

		if (file_exists($filedest)) {
			echo "<script languaje='javacript'>confirm('El archivo ya existe en la base de datos.');</script>";
			return 0;
		}
		
		if (copy($filesource,$filedest)) { 
			echo "<script languaje='javacript'>confirm('Archivo subido satisfactoriamente.');</script>";
			return 1;
		}
		else {
			echo "<script languaje='javacript'>confirm('No se puede copiar el archivo en el directorio de almacenamiento.');</script>";
			return 0;
		}
}

//FUNCION Sube un archivo a la BD
//REQUIERE $form => arreglo con datos del formulario
//Ej: $form['claves'],$form['descripcion'],$form['dir']
//y el $file que es el $_FILES['file']
function upFileTo_DB($form,$file){
	
	$dir = $form['dir']; //REQUERIDO 

	if(isset($form['claves']))$claves = $form['claves'];
	else $claves = NULL;
	if(isset($form['descripcion']))$descripcion = $form['descripcion'];//$_POST['des'];
	else $descripcion = NULL;
	
	$nombre = $file['name'];//$_POST['titulo'];
	date_default_timezone_set('America/Costa_Rica');
	$today = date("y-m-d h:i:s"); 

	@session_start();
	if(isset($_SESSION['usuario'])){
		$sql = "INSERT INTO archivo (claves,nombre,descripcion,dir,PersonaID,fecha_creado) 
				VALUES ('$claves','$nombre','$descripcion','$dir',".$_SESSION['usuario'].",'$today')";
	}
	else{
		$sql = "INSERT INTO archivo (claves,nombre,descripcion,dir,fecha_creado) 
				VALUES ('$claves','$nombre','$descripcion','$dir','$today')";		
	}
	
	iniBD();
	$res = mysql_query($sql);				
	
	if($res){
		$row = mysql_fetch_row(mysql_query("SELECT MAX(ArchivoID) FROM archivo;"));
		return $row[0];
	}
	else return 0;
}

//Funcion para obtener la extension del archivo 
function extname($file) 
{
	$file = explode(".",basename($file));
	return $file[count($file)-1];
}
//Funcion para obtener el tamano del archivo
function getfilesize($size) 
{
	if ($size < 2) return "$size byte";
	$units = array(' bytes', ' KB', ' MB', ' GB', ' TB');
	for ($i = 0; $size > 1024; $i++) { $size /= 1024; }
	return round($size, 2).$units[$i];
}

function logout(){
	unset($_SESSION['correo']);	
	unset($_SESSION['usuario']);	
	unset($_SESSION['nombre']);	
	unset($_SESSION['apellidos']);	
	unset($_SESSION['cuenta']);	
	
	unset($_SESSION['ClienteID']);	
	$_SESSION['cu']='';
		
	header ("Location: ../ss/autenticar/"); 
}

if(isset($_GET['site'])&&$_GET['site']=='jerarquia')include("../../gateway/editar_jerarquia.php");

?>